package com.xiangxiao.rpan.storage.dao;

import com.xiangxiao.rpan.storage.entity.StorageSource;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * @auther xiangxiao
 * @email 573768011@qq.com
 * @data 2023/7/3 15:18
 */
@Mapper
public interface StorageSourceMapper {
  /**
   *获取全局可用的存储资源列表
   * @return List<StorageSource>
   * */
  List<StorageSource> findListByEnableOrderByOrderNum();

  /**
   * 获取当前设置的存储源列表
   * @return 存储源列表
   */
  List<StorageSource> findAllOrderByOrderNum();

  /**
   *  根据 id 获取指定存储源的类型
   * @return 存储源对应的类型
   */
  StorageSource selectById(Serializable id);

  /**
   * 根据存储源 key 获取存储源
   * @param   storageKey
   *          存储源 key
   * @return  存储源信息
   */
  StorageSource findByStorageKey(@Param("storageKey") String storageKey);

  /**
   * 插入新的存储源，如果没有 id 则新增，有则更新
   * @param   storageSource
   *          存储源对象
   * @return  保存后的id
   */
  Integer insertStorage(StorageSource storageSource);


  /**
   * 按传入的id去修改存储源
   * @param   storageSource
   *          存储源对象
   * @return  保存后的id
   */
  Integer updateStorageById(StorageSource storageSource);

  /**
   *  根据 id 删除指定存储源的类型
   * @return 存储源对应的类型
   */
  int deleteStorageById(Serializable id);

  /**
   *据存储源的key去修改其id(修改表t_storage_source_config)
   * */
  void updateStorageSourceConfigId(String key, Integer storageId);
}
